package edu.yctc.delivery.controller;

import javax.servlet.http.HttpSession;

import org.springframework.ui.Model;

import edu.yctc.delivery.entity.UserDO;
import edu.yctc.delivery.vo.FindPasswordVO;
import edu.yctc.delivery.vo.FrontCaptchaVO;
import edu.yctc.delivery.vo.MailFindPasswordVO;
import edu.yctc.delivery.vo.PhoneFindPasswordVO;
import edu.yctc.delivery.vo.UpdateMailVO;
import edu.yctc.delivery.vo.UpdatePhoneVO;
import edu.yctc.delivery.vo.UserModifyPasswordVO;
import edu.yctc.delivery.vo.UserVO;

public interface UserController {

    /**
     * 展示用户注销页
     * 
     * @return
     */
    public String showSignout();

    /**
     * 用户注销
     * 
     * @param httpSession
     * @return
     */
    public String signout(HttpSession httpSession);

    /**
     * 展示登陆页
     * 
     * @param httpSession
     * @param model
     * @return
     */
    public String showSignin(HttpSession httpSession, Model model);

    /**
     * 登陆
     * 
     * @param userDO
     * @param httpSession
     * @param model
     * @return
     */
    public String signin(UserDO userDO, HttpSession httpSession, Model model);

    /**
     * 展示密码修改页
     * 
     * @return
     */
    public String showChangePassword();

    /**
     * 展示改密成功页
     * 
     * @return
     */
    public String showChangePasswordSuccess();

    /**
     * 展示登陆成功页
     * 
     * @return
     */
    public String showLoginSuccess();

    /**
     * 注销成功页
     * 
     * @return
     */
    public String showLogoutSuccess();

    /**
     * 注册
     * 
     * @param userVO
     * @param httpSession
     * @param model
     * @return
     */
    public String register(UserVO userVO, HttpSession httpSession, Model model);

    /**
     * 改密
     * 
     * @param userModifyPasswordVO
     * @param httpSession
     * @return
     */
    public String modifyPassword(UserModifyPasswordVO userModifyPasswordVO, HttpSession httpSession);

    /**
     * 展示修改邮箱用户验证页面
     * 
     * @return
     */
    public String showMailAuthentication();

    /**
     * 修改邮箱用户验证post请求
     * 
     * @param mailCaptchaVO
     * @param httpSession
     * @return
     */
    public String mailAuthentication(FrontCaptchaVO mailCaptchaVO, HttpSession httpSession);

    /**
     * 修改邮箱
     * 
     * @param updateMailVO
     * @param httpSession
     * @return
     */
    public String updateMail(UpdateMailVO updateMailVO, HttpSession httpSession);

    /**
     * 展示修改电话用户验证页面
     * 
     * @return
     */
    public String showPhoneAuthentication();

    /**
     * 修改电话用户验证post请求
     * 
     * @param phoneCaptchaVO
     * @param httpSession
     * @return
     */
    public String phoneAuthentication(FrontCaptchaVO phoneCaptchaVO, HttpSession httpSession);

    /**
     * 修改电话
     * 
     * @param updatePhoneVO
     * @param httpSession
     * @return
     */
    public String updatePhone(UpdatePhoneVO updatePhoneVO, HttpSession httpSession);

    /**
     * 邮箱找密
     * 
     * @param userModifyPasswordVO
     * @return
     */
    public String findPasswordByEmail(MailFindPasswordVO mailFindPasswordVO, HttpSession httpSession);

    /**
     * 手机找密
     * 
     * @param userModifyPasswordVO
     * @return
     */
    public String findPasswordByPhone(PhoneFindPasswordVO phoneFindPasswordVO, HttpSession httpSession);

    /**
     * 找密后的密码更新
     * 
     * @param findPasswordVO
     * @return
     */
    public String findUpdatePassword(FindPasswordVO findPasswordVO, HttpSession httpSession);
}
